/*
@InterfaceName DataScheduleService
@Date      2022/8/4
@Description TODO
@Author    SubUp
@version   1.0
*/
package com.sunjob.mrojobschedule.service;

import com.sunjob.common.domain.scheduleServer.JobSchedule;
import com.sunjob.common.domain.scheduleServer.PlanSchedule;

import java.util.List;
import java.util.Map;

public interface ProductScheduleService<T> {
    /**
     * 获得所有物品
     * @param kindId 二级结构
     * @return
     */
    List<T> selectProducts(Integer kindId);

    /**
     * 获得物品的详细信息
     * @param kindId
     * @param productId
     * @return
     */
    Map selectProduct(Integer kindId,Integer productId);

    /**
     * 点击生成计划弹出窗口的参数配置，有计划生存周期、检修依据条件、计划性质
     * @return
     */
    Map generatePlanList();

    /**
     * 点击任务派发弹出窗口的参数配置，有作业级别、技术员工号、技术员姓名、技术员职位
     * @return
     */
    Map generateJobList();
    /**
     * 获得计划中检修对象的审批方式的参数配置
     * @return
     */
    Map selectExaminePatternParam();

    /**
     * 获得计划检修对象的参数配置
     * @return
     */
    Map selectExamineChoiceParam();

    /**
     * 获得计划审批状态的参数配置
     * @return
     */
    Map selectExamineStateParam();

    /**
     * 获得计划审批条件的参数配置
     * @return
     */
    Map selectExamineConditionParam();

    /**
     * 获得作业反馈状态的参数配置
     * @return
     */
    Map selectJobFeedBackParam();

    /**
     * 获得作业级别的参数配置
     * @return
     */
    Map selectJobLevelParam();

    /**
     * 获得计划性质条件的参数配置
     * @return
     */
    Map selectPlanNatureParam();

    /**
     * 获得计划状态条件的参数配置
     * @return
     */
    Map selectPlanStateParam();

    /**
     * 获得计划时间展示条件的参数配置
     * @return
     */
    Map selectScheduleShowParam();

    /**
     * 获得计划生存周期条件的参数配置
     * @return
     */
    Map selectLifeCycleParam();

    /**
     * 计划界面参数和数据的调度
     * @param scheduleId
     * @return
     */
    Map scheduleJobMenu(String scheduleId);
    /**
     * 作业界面参数和数据的调度
     * @param scheduleId
     * @return
     */
    Map schedulePlanMenu(String scheduleId);

    /**
     * 故障处理，流程：生成计划-审批-派发作业
     *
     * @param plan
     * @return
     */
    Integer faultHandlerByExamine(PlanSchedule plan);

    /**
     * 故障处理，流程：生成计划-派发作业
     * @param job
     * @return
     */
    Integer faultHandler(JobSchedule job);

    /**
     * 普查改造，流程：生成计划
     * 选中检修对象、二级分类Id。生成计划中计划性质直接为普查改造
     * @return
     */
    Integer censusTransformation(String planNatureId);


}
